package rsp

import (
	"encoding/json"
	"fmt"
	"proxy_resource_test/bootstrap/models"
)

// Parsers 预先定义好解析函数表，如果后期需要新增解析函数，只需要在这里添加即可
var Parsers = map[string]func([]byte) (models.IpInfo, error){
	"brightdata": func(body []byte) (models.IpInfo, error) {
		var bd models.BrightData
		if err := json.Unmarshal(body, &bd); err != nil {
			return models.IpInfo{}, fmt.Errorf("BrightData 解析失败: %w", err)
		}
		return bd.ToIpInfo(), nil
	},
	"cloudflare": func(body []byte) (models.IpInfo, error) {
		var cf models.CloudflareInfo
		if err := cf.ParseCloudflareInfo(string(body)); err != nil {
			return models.IpInfo{}, fmt.Errorf("cloudflare 解析失败: %w", err)
		}
		return cf.ToIpInfo(), nil
	},
	"ipinfo": func(body []byte) (models.IpInfo, error) {
		var wi models.WebIpInfo
		if err := json.Unmarshal(body, &wi); err != nil {
			return models.IpInfo{}, fmt.Errorf("BrightData 解析失败: %w", err)
		}
		return wi.ToIpInfo(), nil
	},
}
